filter3(cons2(X, Y), 0, M) -> cons2(0, filter3(Y, M, M))
filter3(cons2(X, Y), s1(N), M) -> cons2(X, filter3(Y, N, M))
sieve1(cons2(0, Y)) -> cons2(0, sieve1(Y))
sieve1(cons2(s1(N), Y)) -> cons2(s1(N), sieve1(filter3(Y, N, N)))
nats1(N) -> cons2(N, nats1(s1(N)))
zprimes -> sieve1(nats1(s1(s1(0))))
↳ QTRS
↳ Non-Overlap Check
filter3(cons2(X, Y), 0, M) -> cons2(0, filter3(Y, M, M))
filter3(cons2(X, Y), s1(N), M) -> cons2(X, filter3(Y, N, M))
sieve1(cons2(0, Y)) -> cons2(0, sieve1(Y))
sieve1(cons2(s1(N), Y)) -> cons2(s1(N), sieve1(filter3(Y, N, N)))
nats1(N) -> cons2(N, nats1(s1(N)))
zprimes -> sieve1(nats1(s1(s1(0))))
↳ QTRS
↳ Non-Overlap Check
↳ QTRS
↳ DependencyPairsProof
filter3(cons2(X, Y), 0, M) -> cons2(0, filter3(Y, M, M))
filter3(cons2(X, Y), s1(N), M) -> cons2(X, filter3(Y, N, M))
sieve1(cons2(0, Y)) -> cons2(0, sieve1(Y))
sieve1(cons2(s1(N), Y)) -> cons2(s1(N), sieve1(filter3(Y, N, N)))
nats1(N) -> cons2(N, nats1(s1(N)))
zprimes -> sieve1(nats1(s1(s1(0))))
filter3(cons2(x0, x1), 0, x2)
filter3(cons2(x0, x1), s1(x2), x3)
sieve1(cons2(0, x0))
sieve1(cons2(s1(x0), x1))
nats1(x0)
zprimes
SIEVE1(cons2(s1(N), Y)) -> SIEVE1(filter3(Y, N, N))
ZPRIMES -> SIEVE1(nats1(s1(s1(0))))
SIEVE1(cons2(s1(N), Y)) -> FILTER3(Y, N, N)
FILTER3(cons2(X, Y), s1(N), M) -> FILTER3(Y, N, M)
FILTER3(cons2(X, Y), 0, M) -> FILTER3(Y, M, M)
SIEVE1(cons2(0, Y)) -> SIEVE1(Y)
ZPRIMES -> NATS1(s1(s1(0)))
NATS1(N) -> NATS1(s1(N))
filter3(cons2(X, Y), 0, M) -> cons2(0, filter3(Y, M, M))
filter3(cons2(X, Y), s1(N), M) -> cons2(X, filter3(Y, N, M))
sieve1(cons2(0, Y)) -> cons2(0, sieve1(Y))
sieve1(cons2(s1(N), Y)) -> cons2(s1(N), sieve1(filter3(Y, N, N)))
nats1(N) -> cons2(N, nats1(s1(N)))
zprimes -> sieve1(nats1(s1(s1(0))))
filter3(cons2(x0, x1), 0, x2)
filter3(cons2(x0, x1), s1(x2), x3)
sieve1(cons2(0, x0))
sieve1(cons2(s1(x0), x1))
nats1(x0)
zprimes
↳ QTRS
↳ Non-Overlap Check
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
SIEVE1(cons2(s1(N), Y)) -> SIEVE1(filter3(Y, N, N))
ZPRIMES -> SIEVE1(nats1(s1(s1(0))))
SIEVE1(cons2(s1(N), Y)) -> FILTER3(Y, N, N)
FILTER3(cons2(X, Y), s1(N), M) -> FILTER3(Y, N, M)
FILTER3(cons2(X, Y), 0, M) -> FILTER3(Y, M, M)
SIEVE1(cons2(0, Y)) -> SIEVE1(Y)
ZPRIMES -> NATS1(s1(s1(0)))
NATS1(N) -> NATS1(s1(N))
filter3(cons2(X, Y), 0, M) -> cons2(0, filter3(Y, M, M))
filter3(cons2(X, Y), s1(N), M) -> cons2(X, filter3(Y, N, M))
sieve1(cons2(0, Y)) -> cons2(0, sieve1(Y))
sieve1(cons2(s1(N), Y)) -> cons2(s1(N), sieve1(filter3(Y, N, N)))
nats1(N) -> cons2(N, nats1(s1(N)))
zprimes -> sieve1(nats1(s1(s1(0))))
filter3(cons2(x0, x1), 0, x2)
filter3(cons2(x0, x1), s1(x2), x3)
sieve1(cons2(0, x0))
sieve1(cons2(s1(x0), x1))
nats1(x0)
zprimes
↳ QTRS
↳ Non-Overlap Check
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
NATS1(N) -> NATS1(s1(N))
filter3(cons2(X, Y), 0, M) -> cons2(0, filter3(Y, M, M))
filter3(cons2(X, Y), s1(N), M) -> cons2(X, filter3(Y, N, M))
sieve1(cons2(0, Y)) -> cons2(0, sieve1(Y))
sieve1(cons2(s1(N), Y)) -> cons2(s1(N), sieve1(filter3(Y, N, N)))
nats1(N) -> cons2(N, nats1(s1(N)))
zprimes -> sieve1(nats1(s1(s1(0))))
filter3(cons2(x0, x1), 0, x2)
filter3(cons2(x0, x1), s1(x2), x3)
sieve1(cons2(0, x0))
sieve1(cons2(s1(x0), x1))
nats1(x0)
zprimes
↳ QTRS
↳ Non-Overlap Check
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
FILTER3(cons2(X, Y), 0, M) -> FILTER3(Y, M, M)
FILTER3(cons2(X, Y), s1(N), M) -> FILTER3(Y, N, M)
filter3(cons2(X, Y), 0, M) -> cons2(0, filter3(Y, M, M))
filter3(cons2(X, Y), s1(N), M) -> cons2(X, filter3(Y, N, M))
sieve1(cons2(0, Y)) -> cons2(0, sieve1(Y))
sieve1(cons2(s1(N), Y)) -> cons2(s1(N), sieve1(filter3(Y, N, N)))
nats1(N) -> cons2(N, nats1(s1(N)))
zprimes -> sieve1(nats1(s1(s1(0))))
filter3(cons2(x0, x1), 0, x2)
filter3(cons2(x0, x1), s1(x2), x3)
sieve1(cons2(0, x0))
sieve1(cons2(s1(x0), x1))
nats1(x0)
zprimes
The following pairs can be strictly oriented and are deleted.
The remaining pairs can at least by weakly be oriented.
FILTER3(cons2(X, Y), 0, M) -> FILTER3(Y, M, M)
FILTER3(cons2(X, Y), s1(N), M) -> FILTER3(Y, N, M)
trivial
↳ QTRS
↳ Non-Overlap Check
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
filter3(cons2(X, Y), 0, M) -> cons2(0, filter3(Y, M, M))
filter3(cons2(X, Y), s1(N), M) -> cons2(X, filter3(Y, N, M))
sieve1(cons2(0, Y)) -> cons2(0, sieve1(Y))
sieve1(cons2(s1(N), Y)) -> cons2(s1(N), sieve1(filter3(Y, N, N)))
nats1(N) -> cons2(N, nats1(s1(N)))
zprimes -> sieve1(nats1(s1(s1(0))))
filter3(cons2(x0, x1), 0, x2)
filter3(cons2(x0, x1), s1(x2), x3)
sieve1(cons2(0, x0))
sieve1(cons2(s1(x0), x1))
nats1(x0)
zprimes
↳ QTRS
↳ Non-Overlap Check
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
SIEVE1(cons2(s1(N), Y)) -> SIEVE1(filter3(Y, N, N))
SIEVE1(cons2(0, Y)) -> SIEVE1(Y)
filter3(cons2(X, Y), 0, M) -> cons2(0, filter3(Y, M, M))
filter3(cons2(X, Y), s1(N), M) -> cons2(X, filter3(Y, N, M))
sieve1(cons2(0, Y)) -> cons2(0, sieve1(Y))
sieve1(cons2(s1(N), Y)) -> cons2(s1(N), sieve1(filter3(Y, N, N)))
nats1(N) -> cons2(N, nats1(s1(N)))
zprimes -> sieve1(nats1(s1(s1(0))))
filter3(cons2(x0, x1), 0, x2)
filter3(cons2(x0, x1), s1(x2), x3)
sieve1(cons2(0, x0))
sieve1(cons2(s1(x0), x1))
nats1(x0)
zprimes
The following pairs can be strictly oriented and are deleted.
The remaining pairs can at least by weakly be oriented.
SIEVE1(cons2(0, Y)) -> SIEVE1(Y)
Used ordering: Combined order from the following AFS and order.
SIEVE1(cons2(s1(N), Y)) -> SIEVE1(filter3(Y, N, N))
[SIEVE1, cons1, filter1] > 0
filter3(cons2(X, Y), 0, M) -> cons2(0, filter3(Y, M, M))
filter3(cons2(X, Y), s1(N), M) -> cons2(X, filter3(Y, N, M))
↳ QTRS
↳ Non-Overlap Check
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
SIEVE1(cons2(s1(N), Y)) -> SIEVE1(filter3(Y, N, N))
filter3(cons2(X, Y), 0, M) -> cons2(0, filter3(Y, M, M))
filter3(cons2(X, Y), s1(N), M) -> cons2(X, filter3(Y, N, M))
sieve1(cons2(0, Y)) -> cons2(0, sieve1(Y))
sieve1(cons2(s1(N), Y)) -> cons2(s1(N), sieve1(filter3(Y, N, N)))
nats1(N) -> cons2(N, nats1(s1(N)))
zprimes -> sieve1(nats1(s1(s1(0))))
filter3(cons2(x0, x1), 0, x2)
filter3(cons2(x0, x1), s1(x2), x3)
sieve1(cons2(0, x0))
sieve1(cons2(s1(x0), x1))
nats1(x0)
zprimes
The following pairs can be strictly oriented and are deleted.
The remaining pairs can at least by weakly be oriented.
SIEVE1(cons2(s1(N), Y)) -> SIEVE1(filter3(Y, N, N))
s > cons1
0 > cons1
filter3(cons2(X, Y), 0, M) -> cons2(0, filter3(Y, M, M))
filter3(cons2(X, Y), s1(N), M) -> cons2(X, filter3(Y, N, M))
↳ QTRS
↳ Non-Overlap Check
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
filter3(cons2(X, Y), 0, M) -> cons2(0, filter3(Y, M, M))
filter3(cons2(X, Y), s1(N), M) -> cons2(X, filter3(Y, N, M))
sieve1(cons2(0, Y)) -> cons2(0, sieve1(Y))
sieve1(cons2(s1(N), Y)) -> cons2(s1(N), sieve1(filter3(Y, N, N)))
nats1(N) -> cons2(N, nats1(s1(N)))
zprimes -> sieve1(nats1(s1(s1(0))))
filter3(cons2(x0, x1), 0, x2)
filter3(cons2(x0, x1), s1(x2), x3)
sieve1(cons2(0, x0))
sieve1(cons2(s1(x0), x1))
nats1(x0)
zprimes